var errorDescription = "Item error";
function main() {		
	var collection;
	var item;
	var itemID;
	var id = null;
    var codeVal;
    var nameVal;
	var warnings = "";
	
	var logger = sc$APIContext.GetActionLogger();
	var dic = sc$Context.JsonDeserialize(sc$APIContext.GetImportBuffer());
	
	//return sc$Context.JsonSerialize("19");
    collection = sc$Context.DataObjects.NewMaster("Hercules", "Items");
    item = collection[0];
    collection.Logic.DisableConstraints();

    if (dic.ContainsKey( "ItemCode" )) {    
        item.SetValue("Code", dic["ItemCode"]);    
    }
    if (dic.ContainsKey( "ItemName" )) {
        item.SetValue("Name", dic["ItemName"]);
    }	
	if (dic.ContainsKey("ItemUniID")){
        item.SetValue("AMsntID", dic["ItemUniID"]);
    }
	if (dic.ContainsKey("ItemFpaID")){
        item.SetValue("VtclID", dic["ItemFpaID"]);
    }
	if (dic.ContainsKey( "ItemPrice" )) {		
         item.SetValue("RetailPrice", dic["ItemPrice"]);
    }	
	
	
	//return sc$Context.JsonSerialize(dic["ItemPrice"]);
	errorDescription = "Item :  " + item.Name;  
	
	item.EndEdit();    


	sc$Context.DataObjects.ExternalDataFix("Hercules", "Items", collection);
	var logger = sc$ApplImportScript.SaveFromImport("Hercules", "Items", collection);
	warnings = sc$ApplImportScript.AppendLoggerWarnings(logger, warnings);	

	logger.Merge(logger);
	
	var outDic = new scDictionary();
	outDic["Cookie"]  = sc$APIContext.GetCookie();
	outDic["EntityId"] = item.ID;
	//outDic["AddressID"] = customerBranch.ID;
	outDic["Messages"] = logger;

	return sc$Context.JsonSerialize(outDic);
}


function ProcessLookupItem(codeVal, nameVal, lookupTable, propName, entity, extraPropName, extraPropValue, lookupVersion){	
	var recID = sc$ApplImportScript.FindArrayCodeNameRecord(lookupTable, codeVal, nameVal, lookupVersion);
	if (recID == undefined){
		if (extraPropName != undefined && extraPropValue != undefined) {			
			var extraProps : Array = [extraPropName];
			var extraPropVals : Array = [extraPropValue];
			
			recID = sc$ApplImportScript.PostArrayCodeNameRecord(lookupTable, codeVal, nameVal, extraProps, extraPropVals, 
																errorDescription, lookupVersion);			
		}
		else {
			recID = sc$ApplImportScript.PostArrayCodeNameRecord(lookupTable, codeVal, nameVal, null, null, 
																errorDescription, lookupVersion);		
		}
		if (recID != undefined) {
			entity.SetValue(propName, recID); 
		}
	}	
	else {
		entity.SetValue(propName, recID); 
	}	
}


function ProcessAddressLookupItem(codeVal, nameVal, lookupTable, propName, entity, extraPropName, extraPropValue, lookupVersion){	
	var extraProps : Array;
	var extraPropVals : Array;
	var recID;
	
	if (extraPropName != undefined && extraPropValue != undefined) {			
		extraProps = [extraPropName];
		extraPropVals = [extraPropValue];
		recID = sc$ApplImportScript.FindArrayCodeNameRecord(lookupTable, codeVal, nameVal, extraProps, extraPropVals);
		if (recID == undefined){
			recID = sc$ApplImportScript.PostArrayCodeNameRecord(lookupTable, codeVal, nameVal, extraProps, extraPropVals, 
																errorDescription, lookupVersion);
		}		
	}
	else {
		recID = sc$ApplImportScript.FindArrayCodeNameRecord(lookupTable, codeVal, nameVal);
		if (recID == undefined){
			recID = sc$ApplImportScript.PostArrayCodeNameRecord(lookupTable, codeVal, nameVal, null, null, 
																errorDescription, lookupVersion);
		}
	}	
	if (recID != undefined) {
		entity.SetValue(propName, recID); 
	}
}